pub fn convert_base(num_str: &str, to_base: u32) -> String {
    //解析输入格式，提取数字部分和原进制
    let (num_part, from_base) = parse_input(num_str);

    //将数字从原进制转换为十进制
    let num_base_10 = match u32::from_str_radix(&num_part, from_base) {
        Ok(value) => value, // 如果转换成功
        Err(_) => panic!("输入的数字无效"), // 如果转换失败，输出错误信息
    };

    //将十进制转换为目标进制
    if num_base_10 == 0 {
        return "0".to_string(); 
    }

    let mut result = String::new();
    let mut num = num_base_10;

    //进行进制转换
    while num > 0 {
        let remainder = num % to_base;
        result.push_str(&format!("{:x}", remainder));
        num /= to_base;
    }

    //反转字符串，得到正确的目标进制结果
    result.chars().rev().collect()
}

// 解析输入字符串，提取数字部分和进制
fn parse_input(num_str: &str) -> (String, u32) {
    let parts: Vec<&str> = num_str.split('(').collect();
    let num_part = parts[0].to_string();
    let base_part = parts[1].trim_end_matches(')').parse::<u32>().expect("Invalid base");

    (num_part, base_part)
}